package com.redpack.redpost.util.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.redpack.redpost.connection.RedpostConexion;
import com.redpack.redpost.util.to.*;

public class ReportePuntosRecompensaDao {

	
	public static List getReportePuntosRecompensa(String fecha_inicio,String fecha_final,String nip,int status_punto) throws Exception {
		
		Connection conn = RedpostConexion.openConnection( ) ;
		conn.setAutoCommit( false ) ;
		PreparedStatement ps = null ;
		ResultSet rs = null ;
		List _ReportePuntos = new ArrayList(); 
		String sql = "" ;
		
		String cond = "" ;
		
		try{			
			
	
			sql += "SELECT cve_punto, cve_arribo, puntos_recibidos, fecha_puntos, nip, ";
			sql += " CASE activo ";
			sql += "  WHEN 0 THEN 'Aplicado' ";
			sql += "  WHEN 1 THEN 'Disponible'  ";
			sql += "  WHEN 2 THEN 'Por Aplicar'  end as status ";
			sql += " FROM redpost.tbl_arribo_puntos ";
			

			if(fecha_inicio != "" && fecha_final != ""){
				if(!(cond == "")){
					cond += " and ";
				}
				cond += " fecha_puntos >= '"+ fecha_inicio +"' and fecha_puntos <= '"+ fecha_final +"' ";
			}
			if(fecha_inicio == "" && fecha_final != ""){
				if(!(cond == "")){
					cond += " and ";
				}
				cond += " fecha_puntos = '"+ fecha_final +"' ";
			}
			if(fecha_inicio != "" && fecha_final == ""){
				if(!(cond == "")){
					cond += " and ";
				}
				cond += " fecha_puntos = '"+ fecha_inicio +"' ";
			}

			if(nip != "" && nip != null){
				if(!(cond == "")){
					cond += " and ";
				}
				cond += " nip = '"+ nip +"' ";
			}			
			
			if(status_punto > 0){
				if(!(cond == "")){
					cond += " and ";
				}
				cond += " activo = "+ (status_punto - 1) +" ";
			}
			

			sql += "where ";
			sql += cond;
			sql += "order by cve_punto desc  ";
			
			System.out.print("Reporte de Puntos: "+sql);
			
			ps = conn.prepareStatement( sql ) ;
			rs = ps.executeQuery();
			
			
			while (rs.next()) {
				PuntosRecompensaTo row = new PuntosRecompensaTo();
				
				row.setCve_punto(rs.getInt("cve_punto"));
				row.setCve_arribo(rs.getInt("cve_arribo"));
				row.setPuntos_recibidos(rs.getFloat("puntos_recibidos"));
				row.setFecha_puntos(rs.getString("fecha_puntos"));
				row.setStatus(rs.getString("status"));
				row.setNip(rs.getString("nip"));

				
				_ReportePuntos.add( row );
			}
			
			conn.commit( ) ;
			ps.close( ) ;
			conn.close( ) ;
			
			return _ReportePuntos ;
			
		}catch ( Exception e ) {
			e.printStackTrace( ) ;
			return _ReportePuntos = null ;
		} finally {
	        if (conn != null) {
	            conn.close();
	        }
			
		}
	}	
	
}
